package br.edu.ifrs.restinga;

import br.edu.ifrs.util.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

/**
 * [x]Declarar atributos [x]Encapsular atributos [x]Declarar método construtor
 * [x]Declarar métodos [x]Declarar herança [N/A]Declarar relacionamento
 */
/**
 *
 * @author ifrs-restinga
 */
public class Elenco extends Pessoa {

    //Declaração de variáveis
    private String especialidade;

    private String tipoPessoa; //variavel implementada para auxiliar uma busca no banco

    private int codigo;

    //método construtor
    public Elenco() {
        super();
        especialidade = "";
        tipoPessoa = "elenco";
        codigo = 0;
    }

    //Atributos encapsulados
    /**
     * @return the especialidade
     */
    public String getEspecialidade() {
        return especialidade;
    }

    /**
     * @param especialidade the especialidade to set
     */
    public void setEspecialidade(String especialidade) {
        this.especialidade = especialidade;
    }

    /**
     * @return the tipoPessoa
     */
    public String getTipoPessoa() {
        return tipoPessoa;
    }

    /**
     * @param tipoPessoa the tipoPessoa to set
     */
    public void setTipoPessoa(String tipoPessoa) {
        this.tipoPessoa = tipoPessoa;
    }

    //Declaração de métodos
    public void Cadastrar() {
        super.Cadastrar();

        Scanner s;
        s = new Scanner(System.in);

        System.out.print("Digite a especialidade: ");
        especialidade = s.next();
    }

    public void Inserir() {
        try {
            Connection con = Conexao.abrirConexao();

            PreparedStatement pstmt;
            pstmt = con.prepareStatement("insert into pessoas (nome, sexo, nacionalidade, dataNascimento, dataPrimeiroFilme, especialidade, tipoPessoa) values (?, ?, ?, ?, ?, ?, ?)");
            pstmt.setString(1, super.getNome());
            pstmt.setString(2, super.getSexo());
            pstmt.setString(3, super.getNacionalidade());
            pstmt.setString(4, super.getDataNascimento());
            pstmt.setString(5, super.getDataPrimeiroFilme());
            pstmt.setString(6, especialidade);
            pstmt.setString(7, tipoPessoa);

            pstmt.execute();

            pstmt.close();
            con.close();
        }/*try*/ catch (Exception e) {
            System.out.println(e.toString());
        }//catch
    }

    public void AtualizarDados() {
        Scanner s = new Scanner(System.in);
        int alt;
        //Consultar();

        System.out.println("Nome : " + super.getNome());
        System.out.println("Deseja alterar? (1-Sim/0-Não)");
        alt = s.nextInt();
        if (alt == 1) {
            System.out.print("Digite a alteração: ");
            //s.next();
            super.setNome(s.next());
        }

        System.out.println("Sexo : " + super.getSexo());
        System.out.println("Deseja alterar? (1-Sim/0-Não)");
        alt = s.nextInt();
        if (alt == 1) {
            System.out.print("Digite a alteração: ");
            //s.next();
            super.setSexo(s.next());
        }

        System.out.println("Nacionalidade : " + super.getNacionalidade());
        System.out.println("Deseja alterar? (1-Sim/0-Não)");
        alt = s.nextInt();
        if (alt == 1) {
            System.out.print("Digite a alteração: ");
            //s.next();
            super.setNacionalidade(s.next());
        }

        System.out.println("Data de nascimento : " + super.getDataNascimento());
        System.out.println("Deseja alterar? (1-Sim/0-Não)");
        alt = s.nextInt();
        if (alt == 1) {
            System.out.print("Digite a alteração: ");
            //s.next();
            super.setDataNascimento(s.next());
        }
        
        System.out.println("Data primeiro filme : " + super.getDataPrimeiroFilme());
        System.out.println("Deseja alterar? (1-Sim/0-Não)");
        alt = s.nextInt();
        if (alt == 1) {
            System.out.print("Digite a alteração: ");
            //s.next();
            super.setDataPrimeiroFilme(s.next());
        }
        
        System.out.println("Sexo : " + getEspecialidade());
        System.out.println("Deseja alterar? (1-Sim/0-Não)");
        alt = s.nextInt();
        if (alt == 1) {
            System.out.print("Digite a alteração: ");
            //s.next();
            setEspecialidade(s.next());
        }

    }//attdados
    
    public void AtualizarBanco() {

        try {
            Connection con = Conexao.abrirConexao();

            PreparedStatement pstmt;
            pstmt = con.prepareStatement("update pessoas set nome = ?, sexo = ?, nacionalidade = ?, dataNascimento = ?, dataPrimeiroFilme = ?, especialidade = ? where codigoPessoa = ?");
            pstmt.setString(1, super.getNome());
            pstmt.setString(2, super.getSexo());
            pstmt.setString(3, super.getNacionalidade());
            pstmt.setString(4, super.getDataNascimento());
            pstmt.setString(5, super.getDataPrimeiroFilme());
            pstmt.setString(6, especialidade);
            pstmt.setInt(7, codigo);

            pstmt.execute();

            pstmt.close();
            con.close();
        } catch (Exception e) {
            System.out.println(e.toString());
        }

    }//attbanco

    public Elenco Consultar() {
        Elenco ele = new Elenco();

        try {
            Connection con = Conexao.abrirConexao();
            
            PreparedStatement pstmt;
            pstmt = con.prepareStatement("select * from pessoas where codigoPessoa = ?");
            pstmt.setInt(1, getCodigo());

            ResultSet rs;
            rs = pstmt.executeQuery();

            if (rs.next() == true) {
                ele = new Elenco();
                ele.setCodigo(rs.getInt("codigoPessoa"));
                ele.setNome(rs.getString("nome"));
                ele.setSexo(rs.getString("sexo"));
                ele.setNacionalidade(rs.getString("nacionalidade"));
                ele.setDataNascimento(rs.getString("dataNascimento"));
                ele.setDataPrimeiroFilme(rs.getString("dataPrimeiroFilme"));
                ele.setEspecialidade(rs.getString("especialidade"));
            }

            rs.close();
            pstmt.close();
            con.close();
        } catch (Exception e) {
            System.out.println(e.toString());
        }

        return ele;
    }

    public void Excluir() {
        try {
            Connection con = Conexao.abrirConexao();

            PreparedStatement pstmt;
            pstmt = con.prepareStatement("delete from pessoas where codigoPessoa = ?");
            pstmt.setInt(1, getCodigo());

            pstmt.execute();

            pstmt.close();
            con.close();
        } catch (Exception e) {
            System.out.println(e.toString());
        }
        
        
    }
    
    public void Imprimir(){
        Consultar();

        System.out.println("Nome : " + super.getNome());
        System.out.println("Sexo : " + super.getSexo());
        System.out.println("Nacionalidade : " + super.getNacionalidade());
        System.out.println("Data de nascimento : " + super.getDataNascimento());
        System.out.println("Data primeiro filme : " + super.getDataPrimeiroFilme());
        System.out.println("Sexo : " + getEspecialidade());
        

    }
    
     public void informarCodigo() {
        Scanner s;
        s = new Scanner(System.in);

        System.out.print("Digite o código: ");
        codigo = s.nextInt();
    }

    /**
     * @return the codigo
     */
    public int getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

}
